/*-------------------------------------------------------
-   文件名：charecter.h
-     模块：char 
-     作用：定义基本的 unicode 基本类型，供输入和输出使用。
-     版本：
-------------------------------------------------------*/

#ifndef  _CHARACTER_H_
#define  _CHARACTER_H_

#include <stdio.h>
#include "asmtype.h"


// 一些有用的宏定义。

#define  IS_DIGITAL(c)      (c>=0x31 && c<=0x39)        // 数字 0-9
#define  IS_ZERO(c)         (c==0x30)
#define  IS_UPPER(c)        (c>=0x41 && c<=0x5A)        // 大写字母 A-Z
#define  IS_LOWER(c)        (c>=0x61 && c<=0x7A)        // 小写字母 a-z
#define  IS_UDLINE(c)       (c==0x5F)                   // 下划线
#define  IS_COLON(c)        (c==0x3A)                   // 冒号
#define  IS_COMMA(c)        (c==0x2C)                   // 逗号
#define  IS_DOT(c)          (c==0x2E)                   // 点号
#define  IS_SEMICOLON(c)    (c==0x3B)                   // 分号
#define  IS_DQUOTA(c)       (c==0x22)
#define  IS_DOLLAR(c)       (c==0x24)                   // 美元符
#define  IS_PERCENT(c)      (c==0x25)                   // 百分号
#define  IS_SIGN(c)         ((c==0x2B)||(c== 0x2D))     // +-
#define  IS_ALPHA(c)        (c==0x40)                   // @
#define  IS_BSLASH(c)       (c==0x5C)                   // 
#define  IS_SPACE(c)        ((c==0x20)||(c==0x09))
#define  IS_LINEND(c)       (c==0x0A)                   // 行结束符
#define  IS_FILEND(c)       (c==0xFFFFFFFF)             // 文件结束符


// 数据类型，utf32 没有考虑大端或小端模式问题，基于本机使用。


// 函数类型定义，根据某种编码标准，读取文件内容，转化为 utf32 . 
typedef   tetra (* read_xxx)( FILE * fp );

// 字符读取的函数原型。
tetra  read_ascii( FILE * fp );
tetra  read_gb2312( FILE * fp );


// 字符输出的函数原型。
tetra  utf32_strlen( tetra * str );
tetra  print_tstr( tetra * str );



#endif

